﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Spring.Context;
using Spring.Context.Support;
using NUnit.Framework;
using BolsaWeb.Negocio;
using BolsaWeb.Dominio;

namespace BolsaWeb.Pruebas
{
    [TestFixture]
    public class TestSeguridadService
    {
        private IApplicationContext contexto = null;

        [TestFixtureSetUp]
        public void InicializarSpring()
        {
            this.contexto = new XmlApplicationContext(
                "assembly://BolsaWeb/BolsaWeb/capaNegocio.xml",
                "assembly://BolsaWeb/BolsaWeb/capaPersistencia.xml");
        }
        [Test]
        public void ValidarLoginCorrecto()
        {
            SeguridadService os = (SeguridadService)this.contexto.GetObject("seguridadService");
            Assert.NotNull(os);
            Usuario user = null;
            string username = "jnevado@comercio.com.pe";
            string clave = "41404588";
            Assert.DoesNotThrow(delegate
            {
                user = os.ValidarUsuario(username, clave);
            });
            Assert.NotNull(user);
        }
        [Test]
        public void ValidarLoginIncorrecto()
        {
            SeguridadService os = (SeguridadService)this.contexto.GetObject("seguridadService");
            Assert.NotNull(os);
            Usuario user = null;
            string username = "jnevado@comercio.com.pe";
            string clave = "invalido";
            Assert.Catch<CuentaInvalidaException>(delegate
            {
                user = os.ValidarUsuario(username, clave);
            });
        }
        [Test]
        public void ValidarLoginInexistente()
        {
            SeguridadService os = (SeguridadService)this.contexto.GetObject("seguridadService");
            Assert.NotNull(os);
            Usuario user = null;
            string username = "correo@invalido.com";
            string clave = "invalido";
            Assert.Catch<CuentaInvalidaException>(delegate
            {

                user = os.ValidarUsuario(username, clave);
            });
            Assert.IsNull(user);
        }
    }
}
